Server Configuration in ASP.NET Core
ASP.NET Core में सर्वर कॉन्फ़िगरेशन
पिछले लेख में हमने डेटाबेस के संदर्भ में कॉन्फ़िगरेशन सोर्स, कॉन्फ़िगरेशन डाटा और कॉन्फ़िगरेशन प्रोवाइडर को समझा है। अब डेटाबेस के बाद सर्वर कॉन्फ़िगरेशन के संदर्भ में कॉन्फ़िगरेशन सोर्स, कॉन्फ़िगरेशन डाटा और कॉन्फ़िगरेशन प्रोवाइडर को समझते हैं।
ASP.NET Core में सर्वर (विशेषकर Kestrel) की कॉन्फ़िगरेशन दरअसल application के बहुत core पहलुओं से जुड़ा है, क्योंकि सर्वर की settings यह निर्धारित करती हैं कि:
- कौन-से ports पर एप्लिकेशन सुनेगी
- किस protocol (HTTP/HTTPS) पर
- TLS/SSL प्रमाणपत्र कौन-सा होगा
- कितनी requests सम्हाली जा सकती हैं इत्यादि
इन्हीं बिंदुओं के संदर्भ में हम तीन प्रमुख घटकों को समझते हैं:
1. Configuration Source (कॉन्फ़िगरेशन स्रोत)
वह स्थान जहाँ से सर्वर (जैसे Kestrel) की settings पढ़ी जाती हैं।
उदाहरण:
स्रोत | भूमिका |
---|---|
appsettings.json | Kestrel की bindings/limits यहीं पर लिखी जाती हैं |
Environment Variables | Docker या production hosting में |
Command-Line Arguments | Testing या Dev automation के लिए |
In-code (hard-coded) config | Programmatically सेट की गई settings |
उदाहरण – appsettings.json में Kestrel के लिए:
{
"Kestrel": {
"Endpoints": {
"Http": { "Url": "http://localhost:5000" },
"Https": {
"Url": "https://localhost:5001",
"Certificate": {
"Path": "certs/devcert.pfx",
"Password": "mypassword"
}
}
}
}
}
2. Configuration Provider (कॉन्फ़िगरेशन प्रदाता)
यह वे component होते हैं जो विभिन्न sources (जैसे JSON, Env Vars) से डेटा को पढ़कर एक Unified Configuration Object (IConfiguration) बनाते हैं।
ASP.NET Core में ये providers IConfigurationProvider interface implement करते हैं।
उदाहरण:
Provider | डेटा स्रोत |
---|---|
JsonConfigurationProvider | appsettings.json |
EnvironmentVariablesConfigurationProvider | ASPNETCORE_Kestrel__Endpoints__Https__Url |
CommandLineConfigurationProvider | --Kestrel:Endpoints:Http:Url=http://localhost:5002 |
ये सभी मिलकर IConfiguration बनाते हैं जिसे हम builder.Configuration के ज़रिए access करते हैं।
3. Configuration Data (कॉन्फ़िगरेशन डेटा)
यह वह वास्तविक key-value data होता है जो IConfiguration में उपस्थित रहता है, और जिससे सर्वर (जैसे Kestrel) runtime पर अपनी settings प्राप्त करता है।
उपयोग उदाहरण:
var builder = WebApplication.CreateBuilder(args);
builder.WebHost.ConfigureKestrel(options =>{
options.Configure(builder.Configuration.GetSection("Kestrel"));
});
यहां Configuration Data → "Kestrel": { ... } section से आता है
और उसे ConfigureKestrel() method के ज़रिए apply किया जाता है।
तीनों घटक साथ कैसे काम करते हैं?
Configuration Source ↓ (e.g., appsettings.json, env vars)
Configuration Provider ↓ (key-value mapping बनाता है)
Configuration Data (IConfiguration) ↓Used by Kestrel Server setup at runtime
सरल उपमा से समझें:
मान लीजिए आपकी एप्लिकेशन एक हवाई अड्डा (Airport) है और Kestrel एक रनवे पर जहाज़ उतारने वाला सिस्टम है:
घटक | उपमा |
---|---|
Configuration Source | वह दस्तावेज़ जहाँ से रनवे के निर्देश आते हैं (मैन्युअल, पत्र, निर्देश) |
Configuration Provider | वह अधिकारी जो इन दस्तावेज़ों को पढ़कर रनवे को निर्देश देता है |
Configuration Data | वह अंतिम actionable जानकारी जिससे रनवे (Kestrel) तय करता है कि किस altitude, speed और दिशा में हवाईजहाज़ को उतरना है |
निष्कर्ष सारणी:
घटक | भूमिका | उदाहरण |
---|---|---|
Configuration Source | सर्वर सेटिंग्स कहाँ से आ रही हैं | appsettings.json, env vars |
Configuration Provider | Source से डेटा पढ़कर usable format बनाता है | JsonConfigurationProvider, EnvironmentVariablesConfigurationProvider |
Configuration Data | अंतिम usable key-value config | Configuration["Kestrel:Endpoints:Https:Url"] |
Environment Variable से Kestrel config कैसे दें?
ASPNETCORE_Kestrel__Endpoints__Http__Url=http://+:8080
(यह production-ready Docker deployment में बहुत काम आता है)
Exercise:
- एक custom port और SSL cert को appsettings.json से पढ़ा जाए
- और उसे ConfigureKestrel() के अंदर apply किया जाए।
टिप्पणियाँ
एक टिप्पणी भेजें